export const useMapMethods = () => {
  /**
   * 打开高德或百度地图
   * @param {*} latitude
   * @param {*} longitude
   * @param {*} name  导航目的地名称
   * @param {*} type 1 百度地图 2 高德地图
   */
  const navToMap = (latitude = 0, longitude = 0, name = '目的地', type = 1) => {
    let url
    let lat, long
    const u = navigator.userAgent
    //判断ios
    const isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)
    // console.log(isIOS)
    //判断Android
    const isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1
    // console.log(isAndroid)
    lat = latitude
    long = longitude
    if (isAndroid) {
      switch (type) {
        case 1: //百度地图
          url = `http://api.map.baidu.com/marker?location=${lat},${long}&title=${name}&content=${name}&output=html`
          break
        case 2: //高德地图
          url = `http://uri.amap.com/marker?position=${long},${lat}&name=${name}&src=mypage&coordinate=gaode&callnative=00`
          //androidamap://viewMap?sourceApplication=appname&poiname=${name}&lat=${lat}&lon=${long}&dev=0
          break
        case 3: //腾讯地图
          url = `http://apis.map.qq.com/uri/v1/marker?marker=coord:${lat},${long};addr:${name}`
          break
        default:
          break
      }
    } else if (isIOS) {
      switch (type) {
        case 1: //百度地图
          url = `http://api.map.baidu.com/marker?location=${lat},${long}&title=${name}&content=${name}&output=html`
          break
        case 2: //高德地图
          url = `http://uri.amap.com/marker?position=${long},${lat}&name=${name}&src=mypage&coordinate=gaode&callnative=00`
          break
        case 3: //腾讯地图
          url = `http://apis.map.qq.com/uri/v1/marker?marker=coord:${lat},${long};addr:${name}`
          break
        default:
          break
      }
    }
    if (!validatenull(url)) {
      window.location.href = url
    }
  }
  /**validatenull 这是判断 url 是否为  null的方法 */
  function validatenull(val) {
    if (typeof val === 'boolean') {
      return false
    }
    if (typeof val === 'number') {
      return false
    }
    if (val instanceof Array) {
      if (val.length === 0) return true
    } else if (val instanceof Object) {
      if (JSON.stringify(val) === '{}') return true
    } else {
      if (val === 'null' || val == null || val === 'undefined' || val === undefined || val === '')
        return true
      return false
    }
    return false
  }
  /**百度坐标转高德坐标 */
  function transformFromBaiduToGCJ(latitude, longitude) {
    var xPi = (3.14159265358979323846264338327950288 * 3000.0) / 180.0

    var x = longitude - 0.0065
    var y = latitude - 0.006
    var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * xPi)
    var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * xPi)
    var a_latitude = z * Math.sin(theta)
    var a_longitude = z * Math.cos(theta)

    return {
      latitude: a_latitude,
      longitude: a_longitude,
    }
  }
  /**高德坐标转百度坐标 */
  function transformFromGCJToBaidu(latitude, longitude) {
    var pi = (3.14159265358979324 * 3000.0) / 180.0

    var z =
      Math.sqrt(longitude * longitude + latitude * latitude) + 0.00002 * Math.sin(latitude * pi)
    var theta = Math.atan2(latitude, longitude) + 0.000003 * Math.cos(longitude * pi)
    var a_latitude = z * Math.sin(theta) + 0.006
    var a_longitude = z * Math.cos(theta) + 0.0065

    return {
      latitude: a_latitude,
      longitude: a_longitude,
    }
  }
  return { navToMap, validatenull, transformFromBaiduToGCJ, transformFromGCJToBaidu }
}
